package com.alibaba.citrus.ots.price.common;


import java.util.HashSet;
import java.util.Set;

/**
 * @author: qiaojiange
 * @create: 2021/09/24
 * @Description 维度规则表达式产生器
 */
public class DimensionRuleExpressGenerator {

    public static void main(String[] args) {
//        1. 根据不同的维度表上配置的描述，进行自动映射其中的值
//        2. 可以批量生成

//        ---
//        1、	销售组织+分销渠道+产品组+送达方+销售单位+物料
//        2、	销售组织+分销渠道+产品组+售达方+销售单位+物料
//        3、	销售组织+分销渠道+产品组+销售地区+销售单位+物料
//        4、	销售组织+分销渠道+产品组+客户组+销售单位+物料
//        5、	销售组织+分销渠道+产品组+销售单位+物料
//
//        6、	销售组织+工厂+物料+价目清单+销售部门
//        7、	销售组织+工厂+物料
//        8、	销售组织+分销渠道+产品组+送达方+物料
//        9、	销售组织+产品组+销售组+客户+物料
//        10、	销售组织+产品组+客户+物料
//        11、	销售组织+部门+销售组+物料
//        12、	销售组织+产品组+定价区域+工厂+物料
//        13、	销售组织+工厂+存储位置+物料
//        14、	销售组织+分销渠道+产品组+定价区域+物料
//        15、	销售组织+产品组+定价区域+物料
//        16、	销售组织+分销渠道+产品组+物料
//        17、	销售组织+产品组+物料

        String str = "销售组织+分销渠道+产品组+送达方+销售单位+物料\n" +
                "销售组织+分销渠道+产品组+售达方+销售单位+物料\n" +
                "销售组织+分销渠道+产品组+销售地区+销售单位+物料\n" +
                "销售组织+分销渠道+产品组+客户组+销售单位+物料\n" +
                "销售组织+分销渠道+产品组+销售单位+物料\n" +
                "销售组织+工厂+物料+价目清单+销售部\n" +
                "销售组织+工厂+物料\n" +
                "销售组织+分销渠道+产品组+送达方+物料\n" +
                "销售组织+产品组+销售组+客户+物料\n" +
                "销售组织+产品组+客户+物料\n" +
                "销售组织+部门+销售组+物料\n" +
                "销售组织+产品组+定价区域+工厂+物料\n" +
                "销售组织+工厂+存储位置+物料\n" +
                "销售组织+分销渠道+产品组+定价区域+物料\n" +
                "销售组织+产品组+定价区域+物料\n" +
                "销售组织+分销渠道+产品组+物料\n" +
                "销售组织+产品组+物料";
        String[] strs = str.split("\\n");
        Set<String> set = new HashSet<>();
        for (int i = 0; i < strs.length; i++) {
            String[] properties = strs[i].split("\\+");
            //对该顺序的 properties进行编排
            boolean isFirst = true;
            String dimensionRule = "";
            String dimensionRuleDesc = "";
            for (String property : properties) {
                String key = DimensionPropertyEnum.obtainKey(property);

//                'a_'+a+',b_'+b+',c_'+c
                if (isFirst) {
//                    'a_'+a
                    dimensionRule = "'" + key + "_'+" + key;
                    dimensionRuleDesc = property;
                    isFirst = !isFirst;
                } else {
//                    +',b_'+b
                    dimensionRule += "+'," + key + "_'+" + key;
                    dimensionRuleDesc += "+" + property;
                }
            }
            System.out.println("维度编号：" + "w" + (i + 1));
            System.out.println("规则描述：" + dimensionRuleDesc);
            System.out.println("规则表达式： " + dimensionRule);
        }
    }

}
